package com.project.mapper;

import com.github.pagehelper.PageInfo;
import com.project.bean.RoleBean;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 角色mapper接口
 */
public interface IRoleMapper {

    /**
     * 查询所有角色
     * @return 角色集合
     */
    @Select("select * from t_role")
    @ResultMap("roleMap")
    public List<RoleBean> findAll();

    /**
     * 添加角色
     * @param role 角色对象
     */
    public int addRole(RoleBean role);

    /**
     * 添加角色的权限集合
     * @param roleId 角色ID
     * @param gradeArray 权限数组
     */
    public void addGradeList(@Param("roleId") int roleId,@Param("gradeArray") int[] gradeArray);

    /**
     * 删除角色，同时删除角色和权限中间表，以及用户和角色中间表信息
     * @param id 角色ID
     */
    @Delete("delete from t_role_grade where fk_roleId=#{id};" +
            "delete from t_user_role where fk_roleId=#{id};" +
            "delete from t_role where pk_roleId=#{id};")
    public void delRole(int id);

    /**
     * 按ID查询角色，同时查询该角色权限集合
     * @param id 角色ID
     * @return 角色对象
     */
    public RoleBean findById(int id);

    /**
     * 修改角色权限
     * @param id 角色id
     * @param gradeArray 权限ID数组
     */
    public void updateRoleGrade(@Param("id") int id,@Param("gradeArray") int[] gradeArray);
}
